package org.example.asm.easydatastructure;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

/**
 * 链表实现
 * 1.末尾添加元素 通过集合实现
 * 2.删除末尾元素 通过集合实现 3. 输出下标为i的元素 4. 在下标为i的元素与下标为i+1的元素之间插入x
 * 5.将序列从小到大升序排序 Collections.sort(list)
 * 6.将序列从大到小降序排序 Collections.sort(list,Collections.reverseOrder());
 * 7.输出当前序列长度 list.size()
 * 8.输出当前整个序列 list.forEach(x->System.out.print(x+" "))
 */
public class XuLieTest01 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        /**
         1.末尾增加元素 list.add 1<x<10的9次方，此时数据类型考虑Integer
         2.删除末尾元素 list.remove，要考虑list为空的问题
         3.输出下标为i的元素 list.get
         4.在下标为i的元素与下标为i+1的元素之间插入x，list.add(i+1,x)
         5.将序列从小到大升序排序 Collections.sort(list)
         6.将序列从大到小降序排序 Collections.sort(list,Collections.reverseOrder());
         7.输出当前序列长度 list.size()
         8.输出当前整个序列 list.forEach(x->System.out.print(x+" "))
         */
        List<Integer> list = new ArrayList<>();

        // 注意 hasNext 和 hasNextLine 的区别
        int q = in.nextInt();

        while (q-- > 0) { // 注意 while 处理多个 case
            int a = in.nextInt();
            switch (a) {
                case 1:
                    list.add(in.nextInt());
                    break;
                case 2:
                    list.remove(list.size() - 1);
                    break;
                case 3:
                    System.out.println(list.get(in.nextInt()));
                    break;
                case 4:
                    int i = in.nextInt();
                    int x = in.nextInt();
                    list.add(i + 1, x);
                    break;
                case 5:
                    Collections.sort(list);
                    break;
                case 6:
                    Collections.sort(list, Collections.reverseOrder());
                    break;
                case 7:
                    System.out.println(list.size());
                    break;
                case 8:
                    list.forEach(y->System.out.print(y + " "));
                    System.out.println();
                    break;
                default:
                    break;
            }
        }
    }
}
